package com.black.platform.permission.service.bz;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.black.common.web.PageQuery;
import com.black.platform.permission.po.Permission;
import com.black.common.vo.PermissionVo;

import java.util.List;

public interface PermissionService extends IService<Permission> {

    IPage<Permission> search(PageQuery<Permission> pageQuery);

    /**
     * 新增系统权限
     *
     * @param permission 系统权限
     * @return 1：成功
     */
    int addPermission(Permission permission);

    /**
     * 修改系统权限
     *
     * @param permission 系统权限
     * @return 1：成功
     */
    int updatePermission(Permission permission);

    /**
     * 删除系统权限
     *
     * @param permission 系统权限
     * @return 1：成功
     */
    int deletePermission(Permission permission);

    /**
     * 获取系统所有权限
     *
     * @param systemCode       系统代码
     * @param isIncludeInvalid 是否包含无效数据
     * @return 系统权限集
     */
    List<Permission> getAllPermissionsBySystem(String systemCode, boolean isIncludeInvalid);

    /**
     * 根据用户Id获取权限集
     *
     * @param userId           用户Id
     * @param systemCode       系统代码
     * @param isIncludeInvalid 是否包含无效数据
     * @return 系统用户权限
     */
    List<PermissionVo> getAllPermissionsByUser(Long userId, String systemCode, boolean isIncludeInvalid);

    /**
     * 根据用户Id获取权限集
     *
     * @param userId     用户Id
     * @param systemCode 系统代码
     * @return 系统用户权限
     */
    List<PermissionVo> getAllDataPermissionsByUser(Long userId, String systemCode);

    /**
     * 根据角色代码获取权限集
     *
     * @param roleCode         角色代码
     * @param systemCode       系统代码
     * @param isIncludeInvalid 是否包含无效数据
     * @return 系统用户权限
     */
    List<Permission> getAllPermissionsByRoleCode(String roleCode, String systemCode, boolean isIncludeInvalid);
}
